Subpath exports
以下の様に、packageのinterfaceを全て列挙する
code:package.json
"exports": {
".": "./index.js",
"./submodule.js": "./src/submodule.js"
}
↑の個々のfieldのことを「subpath」と呼んでいる
.というsubpathがメインのentry pointとなる
./submodule.jsとかはdocs内では、custom subpathと呼んでいる
使う側はこんな感じでimportする
code:ts
import submodule from 'es-module-package/submodule.js';
逆に、上記の様にして列挙されなかったpathには外部から参照できない
見ようと思えば、from 'hoge/piyo/fuga'みたいにして中まで見れちゃっていた
が、exportsではこれが防がれる
*でパターンの指定もできる
code:package.json
"exports": {
"./features/*.js": "./src/features/*.js"
},
nullを指定することでprivateなsub folderを除外できる
code:package.json
"exports": {
"./features/*.js": "./src/features/*.js",
"./features/private-internal/*": null
}
例えば、これがエラーになる
code:ts
import featureInternal from 'es-module-package/features/private-internal/m.js';
.だけならわざわざ{}で囲う必要はない
code:package.json
"exports": {
".": "./index.js"
}
code:package.json
"exports": "./index.js"